bitkeeper revision 1.1084 (40f550b1_LIi9erer0DqFiK5Y96wdA)
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Wed, 14 Jul 2004 15:26:41 +0000 (15:26 +0000)
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Wed, 14 Jul 2004 15:26:41 +0000 (15:26 +0000)
Bugfix

tools/libxc/xc_linux_build.c
xen/common/elf.c

index e2edd81e170dd3231bbdb4818a0a5b1a30bd5913..23ec09cb095faefcd00a25ab043f9ba6d2f25f32 100644 (file)
@@ -560,7 +560,7 @@ static int parseelfimage(char *elfbase,
     Elf_Phdr *phdr;
     Elf_Shdr *shdr;
     unsigned long kernstart = ~0UL, kernend=0UL;
-    char *shstrtab, *guestinfo, *p;
+    char *shstrtab, *guestinfo=NULL, *p;
     int h;
 
     if ( !IS_ELF(*ehdr) )
@@ -608,13 +608,9 @@ static int parseelfimage(char *elfbase,
             return -EINVAL;
         }
 
-        *pvirtstart = kernstart;
-        if ( (p = strstr(guestinfo, "VIRT_BASE=")) != NULL )
-            *pvirtstart = strtoul(p+10, &p, 0);
-
         break;
     }
-    if ( h == ehdr->e_shnum )
+    if ( guestinfo == NULL )
     {
         ERROR("Not a Xen-ELF image: '__xen_guest' section not found.");
         return -EINVAL;
@@ -639,6 +635,10 @@ static int parseelfimage(char *elfbase,
         return -EINVAL;
     }
 
+    *pvirtstart = kernstart;
+    if ( (p = strstr(guestinfo, "VIRT_BASE=")) != NULL )
+        *pvirtstart = strtoul(p+10, &p, 0);
+
     *pkernstart = kernstart;
     *pkernend   = kernend;
     *pkernentry = ehdr->e_entry;
index b59171b5d9550ca3e8ba5652b8284e41b11a4197..d5912fe3416247d24f25c7cd92aee7bb82898979 100644 (file)
@@ -27,7 +27,7 @@ int parseelfimage(char *elfbase,
     Elf_Phdr *phdr;
     Elf_Shdr *shdr;
     unsigned long kernstart = ~0UL, kernend=0UL;
-    char *shstrtab, *guestinfo, *p;
+    char *shstrtab, *guestinfo=NULL, *p;
     int h;
 
     if ( !IS_ELF(*ehdr) )
@@ -75,13 +75,9 @@ int parseelfimage(char *elfbase,
             return -EINVAL;
         }
 
-        *pvirtstart = kernstart;
-        if ( (p = strstr(guestinfo, "VIRT_BASE=")) != NULL )
-            *pvirtstart = simple_strtoul(p+10, &p, 0);
-
         break;
     }
-    if ( h == ehdr->e_shnum )
+    if ( guestinfo == NULL )
     {
         printk("Not a Xen-ELF image: '__xen_guest' section not found.\n");
         return -EINVAL;
@@ -106,6 +102,10 @@ int parseelfimage(char *elfbase,
         return -EINVAL;
     }
 
+    *pvirtstart = kernstart;
+    if ( (p = strstr(guestinfo, "VIRT_BASE=")) != NULL )
+        *pvirtstart = simple_strtoul(p+10, &p, 0);
+
     *pkernstart = kernstart;
     *pkernend   = kernend;
     *pkernentry = ehdr->e_entry;